home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy001 / files / a2.art < prev    next >
Encoding:
Text File  |  1996-12-01  |  5.8 KB  |  99 lines

  1. Programación orientada a objetos
  2. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  3.  
  4.   La programación orientada a objetos (o OOP, object oriented programing)
  5. no es un nuevo compilador, ni un nuevo lenguaje, es mucho más que todo eso,
  6. es una nueva manera de pensar, de estructurar los programas que va mucho más
  7. allá de un simple lenguaje. Es relativamente nueva pues desde hace mucho
  8. tiempo (quizas desde cuando Babage ideó aquella maravillosa máquina) el
  9. hombre ha intentado ponerla en práctica, pero siempre se vió dificultado por
  10. la falta de potencia de los ordenadores de la época.
  11.   Entorno a la programación orientada a objetos se ha creado un buen número
  12. de mitos que intentaremos concretar y discernir en el transcurso de esta
  13. série de artículos. No se pretenderá dar un curso para dominar en 5 dias la
  14. nueva filosofía, sino que se intentará ir poco a poco, paso a paso hasta
  15. llegar a un punto donde podremos meternos a programar cualquier cosa.
  16.   El lenguaje elegido para esta série ha sido el C++ que, digan lo que digan,
  17. es tan válido para dominar la OOP como cualquier otro (lease SmallTalk,
  18. Eiffel, etc). He elegido este y no otro lenguaje porque será más sencillo
  19. para los que ya tengan un mínimo conocimiento de C y porque todos tienen
  20. acceso a un compilador suficientemente bueno (el de GNU es muy bueno y además
  21. gratuito).
  22.   Los objetos son el centro sobre el que gira todo el universo de la OOP. Un
  23. objeto no es más que una abstracción informática de un objetos real, es decir
  24. una representación en un computador de lo que nos podemos encontrar en la
  25. realidad. Pero no sólo es eso, es mucho más, pues un objeto es tanto una
  26. bicicleta, un coche, un arbol o una persona como la felicidad, la alegria,
  27. un átomo o un rayo de luz. Todo lo que intentes describir en el computador
  28. será un objeto y como tal tendrá una série de propiedades y formas de in-
  29. teractuar con el resto de objetos que convivan en la jungla de bits.
  30.   Por eso decia lo de abstracción; si intentásemos describir exahustivamente
  31. lo que es un hombre, por ejemplo, tendriamos que representar el número de
  32. cabellos que tiene, el color de sus ojos, su altura, etc. datos que en un
  33. programa en el que fuesemos a hacer un retrato robot de una persona podrian
  34. ser necesarios, pero tendriamos que describir tambien el tipo de música que
  35. le gusta, el número de hijos que tiene, etc. que son aspectos de los que
  36. podriamos prescindir sin que el programa perdiese ni pizca de funcionalidad.
  37. Además seria prácticamente imposible representar todas y cada uno de las
  38. caracteristicas de un objeto del mundo real.
  39.   Otro aspecto interesante en el mundo de la OOP es que los objetos se
  40. autocontienen, es decir, si creamos un objeto "pez" que sepa nadar, la función
  41. que le pedirá que nade, será una función interna al objeto y no externa como
  42. pasaba con la metodologia tradicional. Una llamada para decirle que nade se
  43. asemejaria a esta:  PezAzul -> Nada().
  44.   Esto último (que los objetos estén autocontenidos) es lo que principalmente
  45. provoca que la reutilización sea una realidad, ya que al estar separadas unas
  46. clases de otras es muy sencillo coger una clase e implementarla en otro
  47. programa (siempre y cuando la clase esté bien programada). Se me ha escapado
  48. (intencionadamente) la palabra "clase" que es, simplemente, la estructura que
  49. aglutina los objetos, es donde están autocontenidas las funciones de que
  50. dispone un objeto. Un ejemplo de clase perro en pseudo-código podria ser:
  51.  
  52.   clase Perro
  53.     entero color_del_pelo
  54.     entero raza
  55.     entero edad
  56.     funcion ladra()
  57.     funcion corre()
  58.     funcion come()
  59.   fin clase
  60.  
  61.   En C++ se deben crear 2 ficheros por cada clase: uno con la descripción de
  62. la clase (.HPP o .HH) y otro con la implementación de ésta clase (.CPP o .CC).
  63. En el segundo fichero, y siguiendo el ejemplo de arriba, se deberia escribir
  64. el código de las funciones ladra(), corre() y come() teniendo en cuenta que
  65. la clase es un territorio aislado, que no conoce nada más que a sus própios
  66. miembros. Programando mal se puede caer en la tentación de hacer como si
  67. conocieramos las variables de una supuesta clase "gato" y podemos meter la
  68. pata modificando las variables de "gato" directamente. El compilador con muy
  69. buen juicio nos mostrará un mensaje de error, pero existe una forma que los
  70. malos programadores de C++ utilizan a deshora para que no haya ningún error
  71. de compilación (el problema vendrá a la hora de reutilizar el código).
  72.   El último punto que veremos en este número es el de la herencia. Como su
  73. propio nombre nos da a entre ver, la herencia consiste en en dar a un nuevo
  74. objeto todas (caso del C++) o alguna de las propiedades de otro objeto ya
  75. creado. El nuevo objeto podrá tener algunas caracteristicas própias además de
  76. las heredadas y de esta forma es mucho más sencillo ampliar un programa
  77. (más concesiones a la reutilización). En el ejemplo de la clase "perro"
  78. anterior, podria haber heredado de una clase mayor llamada "mamífero" que
  79. aglutinara a todos los animales que se alimentan de leche materna al nacer.
  80. Y esta clase "mamífero" podría haber sido heredada a su vez de un clase
  81. "animal" que compartieran todos los animales y de esta misma clase podría
  82. colgar otra llamada "reptil" y así tantas clases como quisieramos creariamos
  83. a partir de unas clases más simples otras más complejas.
  84.  
  85.                 animal
  86.                  / \
  87.                /     \
  88.              /         \
  89.          mamífero     reptil
  90.            / \          / \
  91.          /     \      /     \
  92.       Perro    ···  ···     ···
  93.  
  94.   Espero que con esta pequeña introducción haya quedado claro apróximadamente
  95. que es la OOP y que es lo que la hace tan atractiva a la hora de crear grandes
  96. proyectos (la reutilización). En el próximo número seguiremos ahondando en la
  97. programación con objetos, veremos que es la sobrecarga y empezaremos con el
  98. código real.
  99.